"""
认证相关常量模块
定义与认证、授权、用户管理相关的常量
"""


class TokenType:
    """令牌类型常量"""
    # 访问令牌
    ACCESS = "access"
    # 刷新令牌
    REFRESH = "refresh"
    # 重置密码令牌
    RESET_PASSWORD = "reset_password"
    # 邮箱验证令牌
    EMAIL_VERIFY = "email_verify"


class AuthType:
    """认证类型常量"""
    # 用户名密码认证
    PASSWORD = "password"
    # 手机号验证码认证
    SMS = "sms"
    # 第三方认证
    OAUTH = "oauth"
    # 扫码认证
    QRCODE = "qrcode"


class UserStatus:
    """用户状态常量"""
    # 正常
    ACTIVE = "active"
    # 未激活
    INACTIVE = "inactive"
    # 已禁用
    DISABLED = "disabled"
    # 已锁定（多次登录失败）
    LOCKED = "locked"
    # 过期（需要修改密码）
    EXPIRED = "expired"

class UserStatusInt:
    """用户状态常量"""
    # 正常
    ACTIVE = 1
    # 未激活
    INACTIVE = 2
    # 已禁用
    DISABLED = -2
    # 已锁定（多次登录失败）
    LOCKED = -1



class Permission:
    """权限相关常量"""
    # 权限类型
    TYPE_MENU = "menu"  # 菜单权限
    TYPE_OPERATION = "operation"  # 操作权限
    TYPE_API = "api"  # API权限
    TYPE_DATA = "data"  # 数据权限
    
    # 预定义权限（基于RBAC模型）
    READ = "read" # 读取权限
    CREATE = "create" # 创建权限
    UPDATE = "update" # 更新权限
    DELETE = "delete" # 删除权限
    EXPORT = "export" # 导出权限
    IMPORT = "import" # 导入权限
    APPROVE = "approve" # 审批权限
    ASSIGN = "assign" # 分配权限

class RoleType:
    """角色类型常量"""
    # 管理员角色
    ADMIN = "admin"
    # 普通用户角色
    USER = "user"

class LoginConfig:
    """登录配置常量"""
    # 最大失败尝试次数
    MAX_FAILED_ATTEMPTS = 5
    # 锁定时间（分钟）
    LOCKOUT_DURATION = 30
    # 密码策略：最小长度
    PASSWORD_MIN_LENGTH = 8
    # 密码策略：最大长度
    PASSWORD_MAX_LENGTH = 32
    # 密码策略：最小复杂度得分
    PASSWORD_MIN_SCORE = 60
    # 密码过期时间（天）
    PASSWORD_EXPIRE_DAYS = 90
    # 记住我有效期（天）
    REMEMBER_ME_DAYS = 30
